Build system cleanups.
#KERNELS = mk.linux-2.6-xen0 mk.linux-2.6-xenU mk.linux-2.4-xen0 mk.linux-2.4-xenU mk.netbsd-2.0-xenU
KERNELS = mk.linux-2.6-xen0 mk.linux-2.6-xenU
+ALLKERNELS = $(patsubst buildconfigs/%,%,$(wildcard buildconfigs/mk.*))
+ALLSPARSETREES = $(patsubst %-xen-sparse,%,$(wildcard *-xen-sparse))
+
export INSTALL_DIR SOURCEFORGE_MIRROR
-.PHONY: all dist install xen tools kernels docs kdelete kclean mkpatches world clean mrproper
+.PHONY: all dist install xen tools kernels docs world clean mkpatches mrproper
+.PHONY: kbuild kdelete kclean
all: dist
sh ./docs/check_pkgs && \
$(MAKE) prefix=$(INSTALL_DIR) dist=yes -C docs install || true
+kbuild: kernels
+
# Delete the kernel build trees entirely
kdelete:
for i in $(KERNELS) ; do $(MAKE) -f buildconfigs/$$i delete ; done
# Clean the kernel build trees
kclean:
- for i in $(KERNELS) ; do $(MAKE) -f buildconfigs/$$i delete ; done
+ for i in $(KERNELS) ; do $(MAKE) -f buildconfigs/$$i clean ; done
# Make patches from kernel sparse trees
mkpatches:
- $(MAKE) -f buildconfigs/Rules.mk mkpatches
+ for i in $(ALLSPARSETREES) ; do $(MAKE) -f buildconfigs/Rules.mk $$i-xen.patch ; done
# build xen, the tools, and a domain 0 plus unprivileged linux-xen images,
$(MAKE) -C docs clean
# clean, but blow away kernel build tree plus tar balls
-mrproper: clean kdelete
- rm -rf dist patches *.tar.bz2
- $(MAKE) -f buildconfigs/Rules.mk mrproper
+mrproper: clean
+ rm -rf dist patches
+ for i in $(ALLKERNELS) ; do $(MAKE) -f buildconfigs/$$i delete ; done
+ for i in $(ALLSPARSETREES) ; do $(MAKE) -f buildconfigs/Rules.mk $$i-mrproper ; done
install-twisted:
wget http://www.twistedmatrix.com/products/get-current.epy
# We expect these two to already be set if people
# are using the top-level Makefile
-DIST_DIR ?= $(shell pwd)/dist
-INSTALL_DIR ?= $(DIST_DIR)/install
+DIST_DIR ?= $(shell pwd)/dist
+INSTALL_DIR ?= $(DIST_DIR)/install
+.PHONY: mkpatches mrproper
-# Figure out which Linux version
-LINUX_26VER ?= $(shell ( /bin/ls -ld linux-2.6.*-xen-sparse ) \
- 2>/dev/null | sed -e 's!^.*linux-\(.\+\)-xen-sparse!\1!' )
-LINUX_24VER ?= $(shell ( /bin/ls -ld linux-2.4.*-xen-sparse ) \
- 2>/dev/null | sed -e 's!^.*linux-\(.\+\)-xen-sparse!\1!' )
-LINUX_SRC_PATH ?= .:..
+# Expand Linux series to Linux version
+LINUX_SERIES ?= 2.6
+LINUX_VER ?= $(patsubst linux-%-xen-sparse,%,$(wildcard linux-$(LINUX_SERIES)*-xen-sparse))
-LINUX_26SRC ?= $(firstword $(foreach dir,$(subst :, ,$(LINUX_SRC_PATH)),\
- $(wildcard $(dir)/linux-$(LINUX_26VER).tar.*z*)))
+# Setup Linux search patch
+LINUX_SRC_PATH ?= .:..
+vpath linux-%.tar.bz2 $(LINUX_SRC_PATH)
-LINUX_24SRC ?= $(firstword $(foreach dir,$(subst :, ,$(LINUX_SRC_PATH)),\
- $(wildcard $(dir)/linux-$(LINUX_24VER).tar.*z*)))
+# download a pristine Linux kernel tarball if there isn't one in LINUX_SRC_PATH
+linux-%.tar.bz2: override _LINUX_VDIR = $(word 1,$(subst ., ,$*)).$(word 2,$(subst ., ,$*))
+linux-%.tar.bz2:
+ echo "Cannot find linux-$*.tar.bz2 in path $(LINUX_SRC_PATH)"
+ wget http://www.kernel.org/pub/linux/kernel/v$(_LINUX_VDIR)/linux-$*.tar.bz2 -O./$@
-.PHONY: mkpatches linux-$(LINUX_24VER)-xen.patch linux-$(LINUX_26VER)-xen.patch mrproper
-# search for a pristine kernel tar ball, or try downloading one
-linux-$(LINUX_26VER).tar.bz2:
-ifeq ($(LINUX_26SRC),)
- echo "Cannot find linux-$(LINUX_26VER).tar.bz2 in path $(LINUX_SRC_PATH)"
- wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-$(LINUX_26VER).tar.bz2 -O./linux-$(LINUX_26VER).tar.bz2
-LINUX_26SRC := ./linux-$(LINUX_26VER).tar.bz2
-endif
-pristine-linux-$(LINUX_26VER): $(LINUX_26SRC)
- rm -rf tmp-linux-$(LINUX_26VER) $@ && \
- mkdir -p tmp-linux-$(LINUX_26VER) && \
- tar -C tmp-linux-$(LINUX_26VER) -jxf $(LINUX_26SRC) && \
- mv tmp-linux-$(LINUX_26VER)/* $@
- touch $@ # update timestamp to avoid rebuild
- @rm -rf tmp-linux-$(LINUX_26VER)
-
-
-# search for a pristine kernel tar ball, or try downloading one
-linux-$(LINUX_24VER).tar.bz2:
-ifeq ($(LINUX_24SRC),)
- echo "Cannot find linux-$(LINUX_24VER).tar.bz2 in path $(LINUX_SRC_PATH)"
- wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-$(LINUX_24VER).tar.bz2 -O./linux-$(LINUX_24VER).tar.bz2
-LINUX_24SRC := ./linux-$(LINUX_24VER).tar.bz2
-endif
-
-pristine-linux-$(LINUX_24VER): $(LINUX_24SRC)
- rm -rf tmp-linux-$(LINUX_24VER) $@ && \
- mkdir -p tmp-linux-$(LINUX_24VER) && \
- tar -C tmp-linux-$(LINUX_24VER) -jxf $(LINUX_24SRC) && \
- mv tmp-linux-$(LINUX_24VER)/* $@ && \
- touch $@ # update timestamp to avoid rebuild
- @rm -rf tmp-linux-$(LINUX_24VER)
+# Expand NetBSD release to NetBSD version
+NETBSD_RELEASE ?= 2.0
+NETBSD_VER ?= $(patsubst netbsd-%-xen-sparse,%,$(wildcard netbsd-$(NETBSD_RELEASE)*-xen-sparse))
+NETBSD_CVSSNAP ?= 20040906
-linux-$(LINUX_24VER)-xen.patch: pristine-linux-$(LINUX_24VER)
- rm -rf tmp-$@
- cp -al pristine-linux-$(LINUX_24VER) tmp-$@
- ( cd linux-$(LINUX_24VER)-xen-sparse ; \
- ./mkbuildtree ../tmp-$@ )
- diff -Nurp pristine-linux-$(LINUX_24VER) tmp-$@ > $@ || true
- rm -rf tmp-$@
+# Setup NetBSD search patch
+NETBSD_SRC_PATH ?= .:..
+vpath netbsd-%.tar.bz2 $(NETBSD_SRC_PATH)
+
+# download a pristine NetBSD tarball if there isn't one in NETBSD_SRC_PATH
+netbsd-%-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2:
+ echo "Cannot find $@ in path $(NETBSD_SRC_PATH)"
+ wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/netbsd-$(NETBSD_VER)-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2 -O./$@
+
+netbsd-%.tar.bz2: netbsd-%-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2
+ ln -fs $< $@
+
+
+
+
+pristine-%: %.tar.bz2
+ rm -rf tmp-$* $@ && \
+ mkdir -p tmp-$* && \
+ tar -C tmp-$* -jxf $< && \
+ mv tmp-$*/* $@
+ touch $@ # update timestamp to avoid rebuild
+ @rm -rf tmp-$*
-linux-$(LINUX_26VER)-xen.patch: pristine-linux-$(LINUX_26VER)
+%-xen.patch: pristine-%
rm -rf tmp-$@
- cp -al pristine-linux-$(LINUX_26VER) tmp-$@
- ( cd linux-$(LINUX_26VER)-xen-sparse ; \
- ./mkbuildtree ../tmp-$@ )
- diff -Nurp pristine-linux-$(LINUX_26VER) tmp-$@ > $@ || true
+ cp -al pristine-$* tmp-$@
+ ( cd $*-xen-sparse && ./mkbuildtree ../tmp-$@ )
+ diff -Nurp pristine-$* tmp-$@ > $@ || true
rm -rf tmp-$@
-mkpatches: linux-$(LINUX_24VER)-xen.patch linux-$(LINUX_26VER)-xen.patch
+%-mrproper:
+ rm -rf pristine-$* $*.tar.bz2
+ rm -rf $*-xen.patch
+ rm -rf $*-tools $*-tools.tar.bz2
-mrproper:
- rm -rf pristine-linux-$(LINUX_24VER) linux-$(LINUX_24VER).tar.bz2
- rm -rf pristine-linux-$(LINUX_26VER) linux-$(LINUX_26VER).tar.bz2
- rm -rf linux-$(LINUX_24VER)-xen.patch linux-$(LINUX_26VER)-xen.patch
- rm -rf pristine-netbsd-2.0 netbsd-2.0-tools
+# never delete any intermediate files.
+.SECONDARY:
+LINUX_SERIES = 2.4
+
EXTRAVERSION = xen0
-FULLVERSION = $(LINUX_24VER)-$(EXTRAVERSION)
+FULLVERSION = $(LINUX_VER)-$(EXTRAVERSION)
LINUX_DIR = linux-$(FULLVERSION)
mkdir -p patches
wget http://www.cl.cam.ac.uk/netos/xen/downloads/ebtables-brnf-5_vs_2.4.27.diff.gz -O- | gunzip -c > $@
-$(LINUX_DIR): pristine-linux-$(LINUX_24VER) patches/ebtables.diff
+$(LINUX_DIR): pristine-linux-$(LINUX_VER) patches/ebtables.diff
rm -rf $(LINUX_DIR)
- cp -al pristine-linux-$(LINUX_24VER) $(LINUX_DIR)
+ cp -al pristine-linux-$(LINUX_VER) $(LINUX_DIR)
# Apply arch-xen patches
- ( cd linux-$(LINUX_24VER)-xen-sparse ; \
+ ( cd linux-$(LINUX_VER)-xen-sparse ; \
./mkbuildtree ../$(LINUX_DIR) )
# Patch kernel Makefile to set EXTRAVERSION
( cd $(LINUX_DIR) ; \
$(MAKE) -C $(LINUX_DIR) ARCH=xen clean
delete:
- rm -rf tmp-linux-$(LINUX_24VER) $(LINUX_DIR)
-
-
-
-
-
-
-
+ rm -rf tmp-linux-$(LINUX_VER) $(LINUX_DIR)
+LINUX_SERIES = 2.4
+
EXTRAVERSION = xenU
-FULLVERSION = $(LINUX_24VER)-$(EXTRAVERSION)
+FULLVERSION = $(LINUX_VER)-$(EXTRAVERSION)
LINUX_DIR = linux-$(FULLVERSION)
mkdir -p patches
wget http://www.cl.cam.ac.uk/netos/xen/downloads/ebtables-brnf-5_vs_2.4.27.diff.gz -O- | gunzip -c > $@
-$(LINUX_DIR): pristine-linux-$(LINUX_24VER) patches/ebtables.diff
+$(LINUX_DIR): pristine-linux-$(LINUX_VER) patches/ebtables.diff
rm -rf $(LINUX_DIR)
- cp -al pristine-linux-$(LINUX_24VER) $(LINUX_DIR)
+ cp -al pristine-linux-$(LINUX_VER) $(LINUX_DIR)
# Apply arch-xen patches
- ( cd linux-$(LINUX_24VER)-xen-sparse ; \
+ ( cd linux-$(LINUX_VER)-xen-sparse ; \
./mkbuildtree ../$(LINUX_DIR) )
# Patch kernel Makefile to set EXTRAVERSION
( cd $(LINUX_DIR) ; \
$(MAKE) -C $(LINUX_DIR) ARCH=xen clean
delete:
- rm -rf tmp-linux-$(LINUX_24VER) $(LINUX_DIR)
-
-
-
-
-
-
-
+ rm -rf tmp-linux-$(LINUX_VER) $(LINUX_DIR)
+LINUX_SERIES = 2.6
+
EXTRAVERSION = xen0
-FULLVERSION = $(LINUX_26VER)-$(EXTRAVERSION)
+FULLVERSION = $(LINUX_VER)-$(EXTRAVERSION)
LINUX_DIR = linux-$(FULLVERSION)
$(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_PATH=$(INSTALL_DIR) install
# The real action starts here!
-$(LINUX_DIR): pristine-linux-$(LINUX_26VER)
+$(LINUX_DIR): pristine-linux-$(LINUX_VER)
rm -rf $(LINUX_DIR)
- cp -al pristine-linux-$(LINUX_26VER) $(LINUX_DIR)
+ cp -al pristine-linux-$(LINUX_VER) $(LINUX_DIR)
# Apply arch-xen patches
- ( cd linux-$(LINUX_26VER)-xen-sparse ; \
+ ( cd linux-$(LINUX_VER)-xen-sparse ; \
./mkbuildtree ../$(LINUX_DIR) )
# Patch kernel Makefile to set EXTRAVERSION
( cd $(LINUX_DIR) ; \
$(MAKE) -C $(LINUX_DIR) ARCH=xen clean
delete:
- rm -rf tmp-linux-$(LINUX_26VER) $(LINUX_DIR)
-
-
-
-
-
-
-
+ rm -rf tmp-linux-$(LINUX_VER) $(LINUX_DIR)
+LINUX_SERIES = 2.6
+
EXTRAVERSION = xenU
-FULLVERSION = $(LINUX_26VER)-$(EXTRAVERSION)
+FULLVERSION = $(LINUX_VER)-$(EXTRAVERSION)
LINUX_DIR = linux-$(FULLVERSION)
$(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_PATH=$(INSTALL_DIR) install
-$(LINUX_DIR): pristine-linux-$(LINUX_26VER)
+$(LINUX_DIR): pristine-linux-$(LINUX_VER)
rm -rf $(LINUX_DIR)
- cp -al pristine-linux-$(LINUX_26VER) $(LINUX_DIR)
+ cp -al pristine-linux-$(LINUX_VER) $(LINUX_DIR)
# Apply arch-xen patches
- ( cd linux-$(LINUX_26VER)-xen-sparse ; \
+ ( cd linux-$(LINUX_VER)-xen-sparse ; \
./mkbuildtree ../$(LINUX_DIR) )
# Patch kernel Makefile to set EXTRAVERSION
( cd $(LINUX_DIR) ; \
$(MAKE) -C $(LINUX_DIR) ARCH=xen clean
delete:
- rm -rf tmp-linux-$(LINUX_26VER) $(LINUX_DIR)
-
-
-
-
-
-
-
+ rm -rf tmp-linux-$(LINUX_VER) $(LINUX_DIR)
NETBSD_RELEASE ?= 2.0
+NETBSD_CVSSNAP ?= 20040906
EXTRAVERSION = xenU
include buildconfigs/Rules.mk
-NETBSD_VER ?= $(shell ( /bin/ls -ld netbsd-$(NETBSD_RELEASE)*-xen-sparse ) 2>/dev/null | \
- sed -e 's!^.*netbsd-\(.\+\)-xen-sparse!\1!' )
-NETBSD_CVSSNAP ?= 20040906
-NETBSD_SRC_PATH ?= .:..
-NETBSD_SRC ?= $(firstword $(foreach dir,$(subst :, ,$(NETBSD_SRC_PATH)),\
- $(wildcard $(dir)/netbsd-$(NETBSD_VER)-xen-kernel-$(NETBSD_CVSSNAP).tar.*z*)))
-NETBSD_TOOLS_SRC ?= $(firstword $(foreach dir,$(subst :, ,$(NETBSD_SRC_PATH)),\
- $(wildcard $(dir)/netbsd-$(NETBSD_VER)-tools.tar.*z*)))
-
build: $(NETBSD_DIR) netbsd-$(EXTRAVERSION)
-netbsd-$(NETBSD_VER)-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2:
-ifeq ($(NETBSD_SRC),)
- @echo "Cannot find netbsd-$(NETBSD_VER)-xen-kernel-$(NETBSD_CVSSNAP).tar.gz in path $(NETBSD_SRC_PATH)"
- @wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/netbsd-$(NETBSD_VER)-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2 -O./netbsd-$(NETBSD_VER)-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2
-NETBSD_SRC := ./netbsd-$(NETBSD_VER)-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2
-endif
-
-pristine-netbsd-$(NETBSD_VER): $(NETBSD_SRC)
- rm -rf tmp-netbsd-$(NETBSD_VER) $@ && \
- mkdir -p tmp-netbsd-$(NETBSD_VER) && \
- tar -C tmp-netbsd-$(NETBSD_VER) -jxf $(NETBSD_SRC) && \
- mv tmp-netbsd-$(NETBSD_VER)/* $@
- touch $@ # update timestamp to avoid rebuild
- @rm -rf tmp-netbsd-$(NETBSD_VER)
+NETBSD_TOOLS_SRC ?= $(firstword $(foreach dir,$(subst :, ,$(NETBSD_SRC_PATH)),\
+ $(wildcard $(dir)/netbsd-$(NETBSD_VER)-tools.tar.*z*)))
-pristine-netbsd-tools-src:
+netbsd-tools-src:
ifeq ($(NETBSD_TOOLS_SRC),)
@echo "Cannot find netbsd-$(NETBSD_VER)-tools.tar.gz in path $(NETBSD_SRC_PATH)"
@wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/netbsd-$(NETBSD_VER)-tools.tar.bz2 -O./netbsd-$(NETBSD_VER)-tools.tar.bz2
NETBSD_TOOLS_SRC := ./netbsd-$(NETBSD_VER)-tools.tar.bz2
endif
-netbsd-tools: pristine-netbsd-tools-src
+netbsd-tools: netbsd-tools-src
@[ -d netbsd-$(NETBSD_RELEASE)-tools ] || { \
echo extract $(NETBSD_TOOLS_SRC); \
tar -jxf $(NETBSD_TOOLS_SRC); }
netbsd-xen%:
$(MAKE) -C netbsd-$(FULLVERSION) config
$(MAKE) -C netbsd-$(FULLVERSION) netbsd
- $(MAKE) -C netbsd-$(FULLVERSION) INSTALL_PATH=$(INSTALL_DIR) INSTALL_NAME=boot/netbsd-$(NETBSD_VER)-$(subst netbsd-,,$@) install
+ $(MAKE) -C netbsd-$(FULLVERSION) INSTALL_PATH=$(INSTALL_DIR) INSTALL_NAME=boot/netbsd-$(NETBSD_VER)-xen$* install
clean:
$(MAKE) -C netbsd-$(FULLVERSION) clean